/**
 * <p>Copyright (c) 2017 深圳市鹏途交通科技有限公司 </p>
 * <p>				   All right reserved. 		     </p>
 * 
 * <p>项目名称 ： 	         </p>
 * <p>创建者   :	lei 
 * 
 * <p>描   述  :   HelloController.java for com.pengtu.gsj.controller.system    </p>
 * 
 * <p>最后修改 : $: 2017年4月18日-下午3:12:20 v 1.0.0	 lei   $ </p>
 * 
 */

package com.pengtu.gsj.controller.system;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.pengtu.gsj.controller.base.BaseController;
import com.pengtu.gsj.entity.app.User;
import com.pengtu.gsj.service.system.UserService;
import com.pengtu.gsj.utils.web.SpringMvcUtils;

/**
 * 
 * HelloController
 * 
 * 2017年4月18日 下午3:12:20
 * 
 * @author lei
 * @version 1.0.0
 * 
 */
@Controller
@RequestMapping("/hello/")
public class HelloController extends BaseController {

	/** 对全局变量的注释，声明变量，等号两边有空格 */
	private static Logger logger = Logger.getLogger(HelloController.class);

	/** 全大写变量用下划线分割,相邻变量用空行隔开 */
	public static final String CODE_KEY_VALUE = "codeKeyValue";

	private UserService userService; // 属性注释,如果变量命名要加注释，说明命名不是很准确

	/**
	 * 方法注释，多个参数，逗号后有空格,方法名要容易理解
	 *  helloWorld:
	 *  适用:
	 * @param request
	 * @param response
	 * @return
	 * @exception
	 * @since 1.0.0
	 */
	@RequestMapping("testHello")
	public String showOrInputUser(HttpServletRequest request,
			HttpServletResponse response, Model model) {
		String id = SpringMvcUtils.getParameter("id");
		int a = 0; // 每一个变量声明/定义占一行（参数变量除外）
		int b = 1; // 局部变量在使用前必须初始化，一般在声明时初始化
		Boolean isExist = false; // 如果是布尔型的变量则最好在命名用is或has开头
		User addUser;
		User findUser = new User(); // 每个变量要用别人看得懂的词语来描述，如：User u，尽量不要在变量后面加魔法数字 例如 user1、user2
		if (StringUtils.isNotEmpty(id)) {
			addUser = userService.getUserById(id);
		} else {
			addUser = new User();
		}
		if (isExist) {
			a = 3;
		}

		/* 一组操作放在一起不用空行隔开，而用空行隔开不同组的代码 */
		addUser.setAttempts(0);
		addUser.setAge("10");
		addUser.setEmail("289202241@qq.com");
		userService.saveUser(addUser);
		logger.info("保存成功");

		/*
		 * if, else, for, do,
		 * while方法不能省略大括号,if与左括号、右括号和大括号之间有空格，比较连接符(>、&&)左右有空格
		 * ,else跟大括号，前后都有空格,逻辑表达式里有多个判断可能时要用小括号括起来
		 */
		if ((a > b) && (b == 1)) {
			a = 1 + 2; // 四则运算符号前后有空格
		} else {
			a = b > 1 ? 1 : -1; // 三元表达式格式，每个符号中间均有空格
		}

		try {
			userService.deleteUser(id);
		} catch (Exception e) {
			logger.error(e); // 使用try...catch时，一定要在catch处理异常 且用logget的error方法
			e.printStackTrace();
		}
		model.addAttribute("addUser", addUser);
		model.addAttribute("findUser", findUser);
		return "userShow"; // 函数的返回值类型要和其功能相匹配
		// return "hello"; 注释掉的代码提交前要删除,一般删除自己的注释的代码,但不要删除别人注释的代码
	}

	/**
	 * 类里面不能写空方法.如果有必要,则在方法里面要加一个注释 addUser: 适用:
	 * 
	 * @exception
	 * @since 1.0.0
	 */
	public void addUser() {
		// TODO 该方法还没有写完,待完成.
	}

}
